// 中序线索化

// 全局变量  指向当前节点的前驱
ThreadNode *pre = NULL;


// thread BinaryTree node
typedef struct ThreadNode{
    ElemType data;
    struct ThreadNode *lchild, *rchild;
    int ltag, rtag;

}ThreadNode, * ThreadTree;

// In Order 一边中序遍历 一边线索化

void InThread(ThreadTree T){
    if(T!=NULL){
        InThread(T->lchild);
        visit(T);
        InThread(T->rchild);
    }
}

void visit(ThreadNode *q){
    if(q->lchild==NULL) // 左孩子空 做前驱线索指向前驱
    {
        q->lchild = pre;
        q->ltag = 1;
    }
    if(pre!=NULL && pre->rchild==NULL) // 前驱的右孩子为空 做后继线索指向 当前节点
    {
        pre->rchild = q;
        pre->rtag=1;
    }
    pre = q;
}


